/**
 * 
 */
package org.stars.daostars.operators;

import org.stars.daostars.ConstraintOperator;
import org.stars.util.StringUtility;

/**
 * <b>Operatore</b>: <code>Empty</code>.
 * <p>
 * <b>Descrizione</b>:
 * l'operatore restituisce <code>true</code> se <code>property</code> è di tipo stringa ed è uguale
 * a <code>null</code> o è una stringa vuota (lunghezza zero).
 * Se è di tipo <code>Object</code> restituisce <code>true</code> se è uguale a <code>null</code>.
 * 
 * <p>
 * <b>Parametri utilizzati</b>:
 * <ul>
 * 		<li>property: SI</li>
 * 		<li>propertyValue: NO</li>
 * 		<li>value: NO</li>
 * </ul>
 * 
 * @author Francesco Benincasa (908099)
 *
 */
public class Empty implements ConstraintOperator {

	/**
	 * 
	 */
	private static final long serialVersionUID = -7094361917059684265L;

	/* (non-Javadoc)
	 * @see it.insiel.daostars.ConstraintOperator#execute(java.lang.Object, java.lang.Object, java.lang.String)
	 */
	@Override
	public boolean execute(Object property, Object propertyValue, String value) {
		boolean ret=false;
		if (property instanceof String)
		{
			String sApp=StringUtility.nvl((String)property);
			ret=sApp.length()==0 ? true: false;
		}
		else
		{
			ret= property==null ? true: false;
		}
		
		return ret;
	}


}
